import pyecharts.charts as chr
from pyecharts import options as opts
"""
图标类型
chr.Line    折线图
chr.Bar     柱状图
chr.Pie     饼图
chr.Scatter 散点图
chr.EffectScatter   涟漪特效散点图
"""
"""
add_yaxis(
    series_name     系列名称
    y_axis          系列数据
    is_selected     是否选中图例
    xaxis_index     使用的 x 轴的 index，在单个图表实例中存在多个 x 轴的时候有用。
    yaxis_index     使用的 y 轴的 index，在单个图表实例中存在多个 y 轴的时候有用。
    color           系列 label 颜色
    label_opts      标签配置项
    tooltip_opts    提示框组件配置项
    itemstyle_opts  图元样式配置项
)
"""
"""
全局配置项：set_global_opts

opts.InitOpts   初始化配置项
        width   图表画布宽度，css 长度单位。
        height  图表画布高度，css 长度单位。
        chart_id    图表 ID，图表唯一标识，用于在多图表时区分。
        renderer    渲染风格，可选 "canvas", "svg"
        page_title  网页标题
        theme   图表主题
        bg_color    图表背景颜色
        animation_opts  画图动画初始化配置

opts.TitleOpts  标题配置项
        title   主标题文本
        title_link  主标题链接
        title_target    主标题链接跳转方式blank,self
        subtitle    副标题文本
        subtitle_link   副标题链接
        subtitle_target 副标题链接跳转方式
        pos_left    组件离容器左侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'left', 'center', 'right'。
        pos_right   组件离容器右侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        pos_top     组件离容器上侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'top', 'middle', 'bottom'。
        pos_bottom  组件离容器下侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        padding     标题内边距。可以是5，[5,10],[5,10,5,10]
        item_gap    主副标题之间的间距。
        title_textstyle_opts    主标题字体样式配置项
        subtitle_textstyle_opts 副标题字体样式配置项

opts.LegendOpts     图例配置项
        type_   图例的类型。'plain'：普通图例。缺省就是普通图例。'scroll'：可滚动翻页的图例。当图例数量较多时可以使用。
        selected_mode   图例选择的模式，控制是否可以通过点击图例改变系列的显示状态。除此之外也可以设成 'single' 或者 'multiple' 使用单选或者多选模式。
        is_show 是否显示图例组件
        pos_left    图例组件离容器左侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'left', 'center', 'right'。
        pos_right   图例组件离容器右侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        pos_top     图例组件离容器上侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'top', 'middle', 'bottom'。
        pos_bottom  图例组件离容器下侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        orient      图例列表的布局朝向。可选：'horizontal', 'vertical'
        align       图例标记和文本的对齐。默认自动（auto），根据组件的位置和 orient 决定。可选参数: `auto`, `left`, `right`
        padding     图例内边距，单位px
        item_gap    图例每项之间的间隔。横向布局时为水平间隔，纵向布局时为纵向间隔。
        item_width  图例标记的图形宽度。
        item_height 图例标记的图形高度。
        inactive_color  图例关闭时的颜色。默认是 #ccc
        textstyle_opts  图例组件字体样式
        legend_icon     图例项的 icon。

opts.TooltipOpts    提示框配置项
        is_show     是否显示提示框组件，包括提示框浮层和 axisPointer。
        trigger     触发类型。可选：item、axis、none
        trigger_on  提示框触发的条件，可选：mousemove、click、mousemove|click、none
        axis_pointer_type   指示器类型。可选line、shadow、none、cross
        is_show_content     是否显示提示框浮层，默认显示。
        is_always_show_content      是否永远显示提示框内容
        show_delay  浮层显示的延迟，单位为 ms
        hide_delay  浮层隐藏的延迟，单位为 ms
        position    提示框浮层的位置，默认不设置时位置会跟随鼠标的位置。通过数组配置：绝对位置，[10, 10]；相对位置: ['50%', '50%']；通过回调函数配置；固定参数配置：'inside'，'top'，'left'，'right'，'bottom'
        formatter   标签内容格式器，支持字符串模板和回调函数两种形式，字符串模板与回调函数返回的字符串均支持用\n换行。
        background_color    提示框浮层的背景颜色。
        border_color        提示框浮层的边框颜色。
        border_width        提示框浮层的边框宽。
        textstyle_opts      文字样式配置项

opts.ToolboxOpts    工具箱配置项
        is_show     是否显示工具栏组件
        orient      工具栏 icon 的布局朝向。可选：'horizontal', 'vertical'
        pos_left    工具栏组件离容器左侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'left', 'center', 'right'。
        pos_right   工具栏组件离容器右侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        pos_top     工具栏组件离容器上侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'top', 'middle', 'bottom'。
        pos_bottom  工具栏组件离容器下侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        feature     各工具配置项

opts.DataZoomOpts   区域缩放配置项
        is_show     是否显示组件。
        type_       组件类型，可选 "slider", "inside"
        is_realtime     拖动时，是否实时更新系列的视图。
        range_start     数据窗口范围的起始百分比。
        range_end       数据窗口范围的结束百分比。
        start_value     数据窗口范围的起始数值。
        end_value       数据窗口范围的结束数值。
        orient      布局方式是横还是竖。可选值为：'horizontal', 'vertical'
        xaxis_index     设置 dataZoom-inside 组件控制的 x 轴
        yaxis_index     设置 dataZoom-inside 组件控制的 y 轴
        is_zoom_lock    是否锁定选择区域（或叫做数据窗口）的大小。如果设置为 true 则锁定选择区域的大小，也就是说，只能平移，不能缩放。
        pos_left        组件离容器左侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'left', 'center', 'right'。
        pos_right       组件离容器右侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        pos_top         组件离容器上侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'top', 'middle', 'bottom'。
        pos_bottom      组件离容器下侧的距离。可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。
        filter_mode     dataZoom 的运行原理是通过数据过滤以及在内部设置轴的显示窗口来达到数据窗口缩放的效果。'filter'：当前数据窗口外的数据，被过滤掉。即会影响其他轴的数据范围。'weakFilter'：当前数据窗口外的数据，被过滤掉。即会影响其他轴的数据范围。'empty'：当前数据窗口外的数据，被设置为空。即不会影响其他轴的数据范围。'none': 不过滤数据，只改变数轴范围。

opts.AxisOpts       坐标轴配置项
        name        坐标轴名称。
        is_show     是否显示 x 轴。
        is_scale    是否是脱离 0 值比例
        is_inverse  是否反向坐标轴
        name_location   坐标轴名称显示位置.'start', 'middle', 'center', 'end'
        name_gap    坐标轴名称与轴线之间的距离
        name_rotate 坐标轴名字旋转，角度值。
        interval    强制设置坐标轴分割间隔。使用 interval 配合 min、max 强制设定刻度划分
        grid_index  x 轴所在的 grid 的索引
        position    x 轴的位置.'top', 'bottom'
        offset      Y 轴相对于默认位置的偏移，在相同的 position 上有多个 Y 轴的时候有用。
        split_number    坐标轴的分割段数，需要注意的是这个分割段数只是个预估值
        boundary_gap    坐标轴两边留白策略.类目轴中可以配置为 true 和 false。非类目轴，包括时间，数值，对数轴，是一个两个值的数组，分别表示数据最小值和最大值的延伸范围
        min_        坐标轴刻度最小值。
        max_        坐标轴刻度最大值。
        min_interval    自动计算的坐标轴最小间隔大小。
        max_interval    自动计算的坐标轴最大间隔大小。
        axisline_opts   坐标轴刻度线配置项
        axistick_opts   坐标轴刻度配置项
        axislabel_opts  坐标轴标签配置项
        axispointer_opts    坐标轴指示器配置项
        name_textstyle_opts 坐标轴名称的文字样式
        splitarea_opts  分割区域配置项
        splitline_opts  分割线配置项
        minor_tick_opts 坐标轴次刻度线相关设置
        minor_split_line_opts   坐标轴在 grid 区域中的次分隔线

"""

# 链式调用

Pic = (
    chr.EffectScatter()
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .add_yaxis("商家B", [10, 23, 30, 14, 55, 80])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
    # 或者直接使用字典参数
    # .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)

Pic.render()    # 保存html格式文件